﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Microsoft.Win32;
using System.IO;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SQLite;
using System.Collections.ObjectModel;

namespace NUMIMAX.Controls
{
    /// <summary>
    /// Interaction logic for AddCoinWindow.xaml
    /// </summary>
    public partial class AddCoinWindow : Window
    {
        OpenFileDialog ofd;
        bool czyDodac = true;
        byte[] bits;
        string _coB;
        public AddItemCallbackFnDodajMonete AddItemCallbackDodajMonete;
      
        public AddCoinWindow(string _co)
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainWindow_Loaded);
            _coB = _co;
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            using (SQLiteConnection sqlConnection = new SQLiteConnection())
            {
                sqlConnection.ConnectionString = "Data source = " + _coB + ";";
                sqlConnection.Open();

                using (SQLiteCommand sqlCommand = new SQLiteCommand(sqlConnection))
                {
                    sqlCommand.CommandText = @"SELECT id_cat, name, rec_status FROM category";
                    SQLiteDataReader sqlReader = sqlCommand.ExecuteReader();

                    while (sqlReader.Read())
                    {
                        cmbCategory.Items.Add(sqlReader.GetValue(1).ToString());
                    }
                }
            }
            cmbCategory.SelectedIndex = 0;
        }
           
        private void btnOtowrz_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                ofd = new OpenFileDialog();
                ofd.Filter = "JPEG Files (*.jpg)|*.jpg|PNG Files (*.png)|*.png";
                ofd.Multiselect = false;
                ofd.ShowDialog();

                BitmapImage bmImage = new BitmapImage();
                bmImage.BeginInit();
                bmImage.UriSource = new Uri(ofd.FileName, UriKind.Absolute);
                bmImage.EndInit();

                Stream stream = bmImage.StreamSource;
                bits = convertBitmapImageToBytestream(bmImage);

                imgZdjecie.Source = bmImage;

                using (SQLiteConnection sqlConnection = new SQLiteConnection())
                {
                    sqlConnection.ConnectionString = "Data source = " + _coB + ";";
                    sqlConnection.Open();
                    using (SQLiteCommand sqlCommand = new SQLiteCommand(sqlConnection))
                    {
                        sqlCommand.CommandText = @"insert into coins_img(img) values (" + bits.ToArray() + ");";
                        SQLiteDataReader sqlReader = sqlCommand.ExecuteReader();
                    }
                }
            }
            catch { ;}
            finally { textBlock15.Visibility = System.Windows.Visibility.Collapsed; }
        }

        public  Byte[] convertBitmapImageToBytestream(BitmapImage bi)
        {
            MemoryStream ms = new MemoryStream();
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bi));
            encoder.Save(ms);
            byte[] bytestream = ms.GetBuffer();
            return bytestream;
        }

        private void btnZapisz_Click(object sender, RoutedEventArgs e)
        {
            if (txtWartoscEmisji.Text.IndexOf(",") > -1)
                txtWartoscEmisji.Text = txtWartoscEmisji.Text.Replace(",", ".");

            if (txtZakupCena.Text.IndexOf(",") > -1)
                txtZakupCena.Text = txtZakupCena.Text.Replace(",", ".");

            walidacjaDanych();
            
            try
            {
                if (czyDodac)
                {
                    Coin nowaMoneta = new Coin(txtNazwa.Text, null, cmbRok.SelectedValue.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", "") + "-" + cmbMiesiac.SelectedValue.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", "") + "-" + cmbDzien.SelectedValue.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", ""),
                        Convert.ToInt32(Regex.Match(txtNominal.Text, @"([0-9\.]*)").Groups[1].ToString()), txtNaklad.Text, txtStempel.Text, txtStop.Text,
                        txtWaga.Text, txtSrednica.Text, txtRank.Text, txtNrKatalogowy.Text, cmbSeriaMonety.SelectedValue.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", ""), "", "", 0,
                        Convert.ToDouble(Regex.Match(txtWartoscEmisji.Text, @"([0-9\.]*)").Groups[1].ToString()),
                        Convert.ToDouble(Regex.Match(txtZakupCena.Text, @"([0-9\.]*)").Groups[1].ToString()), 0,
                        Convert.ToInt32(Regex.Match(txtIlosc.Text, @"([0-9\.]*)").Groups[1].ToString()), 0, 0, 0, "", "", ""
            , "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
                    AddItemCallbackDodajMonete(nowaMoneta);
                    using (SQLiteConnection sqlConnection = new SQLiteConnection())
                    {
                        sqlConnection.ConnectionString = "Data source = " + _coB + ";";
                        sqlConnection.Open();
                        int licznikSubCategory = 0;
                        using (SQLiteCommand sqlCommand = new SQLiteCommand(sqlConnection))
                        {
                            using (SQLiteCommand sqlCommand2 = new SQLiteCommand(sqlConnection))
                            {
                                sqlCommand2.CommandText = @"SELECT id_sub FROM subcat WHERE (id_cat = "+(cmbCategory.SelectedIndex+1)+") GROUP BY id_cat";
                                SQLiteDataReader sqlReader2 = sqlCommand2.ExecuteReader();
                                while (sqlReader2.Read())
                                {
                                    licznikSubCategory = Convert.ToInt32(sqlReader2.GetValue(0).ToString());
                                }
                            }
                            sqlCommand.CommandText = @"insert into coins(
id_cat, id_sub, name, year_em, denomin, edition, stamp, alloy, weight, diameter,
                                            rant, nb_catalogue, index1, index2, price_issue, status, id_coin_img, 
                                            id_coin_price, id_coin_price_quarter, id_coin_type, rec_status) 
                                            values
(" + (cmbCategory.SelectedIndex + 1) + "," + licznikSubCategory + ",'" + nowaMoneta.Name + "','"
   + nowaMoneta.EmissionDate.Replace("-", "") + "'," + nowaMoneta.FaceValue + ",'" + nowaMoneta.Circulation + "','" + nowaMoneta.Stamp + "','" + nowaMoneta.Alloy + "','" + nowaMoneta.Weight + "','" + nowaMoneta.Diameter
   + "','" + nowaMoneta.Rant + "','" + nowaMoneta.CatalogNumber + "','','',"+nowaMoneta.EmissionWorthInSet+",'"+nowaMoneta.ConservationStateInSet+"','','','','','');";
                            SQLiteDataReader sqlReader = sqlCommand.ExecuteReader();
                        }
                    }
                }
            }
            catch
            {
                MessageBox.Show("Dodawanie nowej monety zakończyło się niepowodzeniem.","Błąd!",MessageBoxButton.OK,MessageBoxImage.Error);
            }
            finally
            {
                if (czyDodac)
                    MessageBox.Show("Dodawanie nowej monety zakończyło się powodzeniem.","Informacja",MessageBoxButton.OK,MessageBoxImage.Information);
                czyDodac = true;
            }
        }

        private void btnAnuluj_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void walidacjaDanych()
        {
            if (txtNazwa.Text == "") { MessageBox.Show("Nie wypełniłeś pola nazwa.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtNazwa.Focus(); czyDodac = false; }
            if (txtNominal.Text == "") { MessageBox.Show("Nie wypełniłeś pola nominał.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtNominal.Focus(); czyDodac = false; }
            if (txtNaklad.Text == "") { MessageBox.Show("Nie wypełniłeś pola Naklad.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtNaklad.Focus(); czyDodac = false; }
            if (txtStempel.Text == "") { MessageBox.Show("Nie wypełniłeś pola Stempel.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtStempel.Focus(); czyDodac = false; }
            if (txtStop.Text == "") { MessageBox.Show("Nie wypełniłeś pola Stop.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtStop.Focus(); czyDodac = false; }
            if (txtWaga.Text == "") { MessageBox.Show("Nie wypełniłeś pola Waga.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtWaga.Focus(); czyDodac = false; }
            if (txtSrednica.Text == "") { MessageBox.Show("Nie wypełniłeś pola Srednica.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtSrednica.Focus(); czyDodac = false; }
            if (txtRank.Text == "") { MessageBox.Show("Nie wypełniłeś pola Rank.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtRank.Focus(); czyDodac = false; }
            if (txtNrKatalogowy.Text == "") { MessageBox.Show("Nie wypełniłeś pola Numer katalogu.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtNrKatalogowy.Focus(); czyDodac = false; }
            if (txtWartoscEmisji.Text == "") { MessageBox.Show("Nie wypełniłeś pola Wartosc emisji.","Uwaga!",MessageBoxButton.OK,MessageBoxImage.Information); txtWartoscEmisji.Focus(); czyDodac = false; }
            if (txtZakupCena.Text == "") { MessageBox.Show("Nie wypełniłeś pola Zakup Cena.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtZakupCena.Focus(); czyDodac = false; }
            if (txtIlosc.Text == "") { MessageBox.Show("Nie wypełniłeś pola Ilosc.", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Information); txtIlosc.Focus(); czyDodac = false; }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //wybor jaki plik ma miec nazwe
            string nazwyAktualizacji = WebDownloader.GetWebPage("http://127.0.0.1/~numimax/administratorPobierzNazwe.php");
            char[] linia = new char[] { '#' };
            string[] tablicaNazwaAktualizacji = nazwyAktualizacji.Split(linia, StringSplitOptions.RemoveEmptyEntries);
            
            //insert z indeksem+1
            int licznikDodany = Convert.ToInt32(tablicaNazwaAktualizacji[tablicaNazwaAktualizacji.Length - 1].Replace("AXL", "").Replace(".dat",""));
            licznikDodany+=1;
            string doWyslania = "AXL" + licznikDodany.ToString() + ".dat" ;
            WebDownloader.GetWebPage("http://127.0.0.1/~numimax/administratorWyslijNazwe.php?nazwa="+doWyslania);
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            string wiadomosc = "";
            string nazwyPlikowDoPobrania = WebDownloader.GetWebPage("http://127.0.0.1/~numimax/uzytkownikWyslijNazwy.php?nazwa_p=" + textBox2.Text + "&nazwa_u=" + textBox1.Text);
            try
            {
                char[] linia = new char[] { '#' };
                string[] tablicaPlikowDoPobrania = nazwyPlikowDoPobrania.Split(linia, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < tablicaPlikowDoPobrania.Length; i++)
                {
                    wiadomosc += tablicaPlikowDoPobrania[i];
                }
            }
            catch { ;}
            if (nazwyPlikowDoPobrania.Length == 0)
                MessageBox.Show("Skończył ci sie chuju abonament   hahahahhahahahahaahha   GIŃ PEDALE !!!!!!!");
            else
                MessageBox.Show(wiadomosc);
            
            //http://127.0.0.1/~numimax/uzytkownikwyslijNazwy.php?nazwa_p=AXL4.dat&nazwa_u=miczel
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            string wiadomosc = "";
            DateTime value = DateTime.Now;
            DateTime czasKv = value.AddMonths(1);
            string czasS = value.ToShortDateString();
            string czasK = czasKv.ToShortDateString();

            string nazwyPlikowDoPobrania = WebDownloader.GetWebPage("http://127.0.0.1/~numimax/uzytkownikAktywacja.php?nazwa="+textBox1.Text+"&start="+czasS+"&koniec="+czasK+"");

            if (nazwyPlikowDoPobrania == "1")
                MessageBox.Show("OK");
            if (nazwyPlikowDoPobrania == "0")
                MessageBox.Show("wykupiles juz konto");
            //http://127.0.0.1/~numimax/uzytkownikAktywacja.php?nazwa=miczel&start=2011-10-10&koniec=2011-12-11
        }
    }
}
